import axios from 'axios';
import qs from 'qs';

// qs.stringify:序列化（将对象转换为字符串）

// 创建一个axios实例，并设置基础URL
const axiosInstance = axios.create({
  baseURL: 'http://localhost:8022/',
  withCredentials: true
});

// 添加请求拦截器
axiosInstance.interceptors.request.use(
  function (config) {
    // 可以从localStorage, sessionStorage或者cookie中读取token
    const token = localStorage.getItem('token'); // 假设 token 保存在 localStorage 中
    if (token) {
      // 如果有 token，则将其添加到请求的 Authorization 头部
      // config.headers['Authorization'] = `Bearer ${token}`;
      config.headers.token = token;
    }
    // 在发送请求之前做些什么
    return config;
  },
  function (error) {
    // 对响应错误做点什么
    // if (error.response) {
    //   // 请求已发出，但服务器响应的状态码不在2xx的范围
    //   console.log(error.response.data);
    //   console.log(error.response.status);
    //   console.log(error.response.headers);

    //   // 假设服务器在401状态码时表示token失效
    //   if (error.response.status === 401) {
    //     // 删除localStorage中的token
    //     localStorage.removeItem('token');

    //     // 根据需要可以进行其他处理，例如重定向到登录页面
    //   }
    // }
      // 对请求错误做些什么
      return Promise.reject(error);
    }
);


// axiosInstance.interceptors.response.use(response => {
//   return response
// }, error => {
//   if (error.response.status === 401) {
//       router.push({ name: 'login' })
//   }
//   return Promise.reject(error)
// })

export const getRequest = (url, params) => {
  let qsParams = qs.stringify(params);
  return axiosInstance.get(url, params);
};

export const postRequest = (url, params) => {
  let qsParams = qs.stringify(params);
  return axiosInstance.post(url, qsParams);
};

export const imgPostRequest = (url, formData) => {
  return axiosInstance.post(url, formData, {
    headers: {
      'Content-Type': 'multipart/form-data',
    },
  });
};

export const postRequestWithFormData = (url, formData) => {
  return axiosInstance.post(url, formData);
};

export const postRequestWithRaw = (url, params) => {
  return axiosInstance.post(url, JSON.stringify(params), {
    headers: {
      'Content-Type': 'application/json',
    },
  });
};

export const deleteRequest = (url, params) => {
  let qsParams = qs.stringify(params);
  return axiosInstance.delete(url, { data: qsParams });
};

export const putRequest = (url, params) => {
  let qsParams = qs.stringify(params);
  return axiosInstance.put(url, qsParams);
};

export const deleteHotel = (data) => {
  // data: FormData
  console.log(data);

  // 注意：对于DELETE请求，通常不需要在请求体中放置数据，而是通过URL传递
  // 根据实际情况调整，如果API要求在body中发送数据，请保留以下配置
  const config = {
    method: 'delete',
    url: '/hotel/del',
    headers: {
      'Content-Type': 'application/json',
    },
    data: data,
  };

  return axiosInstance.request(config);
};

export const patchRequestWithRaw = (url, params) => {
  return axiosInstance.patch(url, JSON.stringify(params), {
    headers: {
      'Content-Type': 'application/json',
    },
  });
};